﻿namespace ArtheaEngine
{
    public abstract class ClassType
    {
        public abstract string Name { get; }
        public abstract string Description { get; }

        public override string ToString()
        {
            return Name;
        }

        public static explicit operator ClassType(string x)
        {
            foreach (ClassType c in World.Classes)
                if (c.Name == x)
                    return c;
            return new WarriorClass();
        }
    }

    public class WarriorClass : ClassType
    {
        private const string description = "Skilled at close range combat and weapons.";
        private const string name = "Warrior";

        public override string Name
        {
            get { return name; }
        }

        public override string Description
        {
            get { return description; }
        }
    }

    public class MagicianClass : ClassType
    {
        private const string description = "Skilled at offensive magic and maladictions.";
        private const string name = "Magician";

        public override string Name
        {
            get { return name; }
        }

        public override string Description
        {
            get { return description; }
        }
    }

    public class ThiefClass : ClassType
    {
        private const string description = "Skilled a trickery and sudden attacks.";
        private const string name = "Thief";

        public override string Name
        {
            get { return name; }
        }

        public override string Description
        {
            get { return description; }
        }
    }

    public class ClericClass : ClassType
    {
        private const string description = "Skilled at healing magic and holy power.";
        private const string name = "Cleric";

        public override string Name
        {
            get { return name; }
        }

        public override string Description
        {
            get { return description; }
        }
    }

    public class HunterClass : ClassType
    {
        private const string description = "Skilled at tracking, beast mastery and long range weapons.";
        private const string name = "Hunter";

        public override string Name
        {
            get { return name; }
        }

        public override string Description
        {
            get { return description; }
        }
    }
}